Some websites include a core platform that provides a set of plugin points that allow for customization. For example, the core platform may provide the infrastructure for an online community, and different business entities that utilize the core platform can customize their online community in unique ways. Each plugin point has a defined interface defined by the core platform and executes under specific conditions (e.g., custom search functionality that executes in response to clicking on a search icon, or just placing a custom business logo at a specific location on a webpage). By having defined plugin points, the core platform can be upgraded without breaking the customizations, and the customizations can be modified without changing the core platform.
Deploying new versions of custom software plugins creates some difficulties, particularly when the new versions are moved to a production environment that is accessed by many users (e.g., thousands). One problem is that releasing new versions typically requires locking users out during the upgrade. Because users may access a website at any time of day or night (particularly for websites that are accessed globally), taking a website down is a problem for users (and thus a problem for the business entity). Users expect a website to be available all the time.
Another problem is the administrative process of who has the authority to initiate an upgrade. For example, a new version may be complete from the standpoint of the developers, but a website administrator for the production website may not be ready for the upgrade. Yet another problem is how long to keep a website down while the new plugin version is tested in the new environment. Because two website environments are not identical, a plugin that appeared to be fine in one environment may not work correctly in another environment (e.g., a production website that enables access to users anywhere on the Internet is different from a QA website that may be limited to internal users).
In addition, even after deployment of a plugin, if a problem is detected, there may be no simple way to revert back to a previous version without bringing down the website again.